package top.dotgo.model;

import java.util.List;

/**
 * @author Administrator
 * @date 2020/5/19 1:01 星期二
 */
public interface IBaseMapping<D extends IBaseDTO<T>, S extends IBaseSaveParam<T>, E extends IBaseEditParam<T>, V extends IBaseVO<T>, T extends IBaseEntity> {

    /**
     * saveParam 转 dto
     *
     * @param param Param
     * @return DTO
     */
    D dto(S param);

    /**
     * editParam 转 dto
     *
     * @param param param
     * @return DTO
     */
    D dto(E param);

    /**
     * entity（PO） 转 dto
     *
     * @param entity Entity
     * @return DTO
     */
    D dto(T entity);

    /**
     * entity列表 转 dto列表
     *
     * @param list list
     * @return List<D>
     */
    List<D> dto(List<T> list);

    /**
     * dto 转 vo
     *
     * @param dto DTO
     * @return VO
     */
    V vo(D dto);

    /**
     * dto列表转 vo列表
     *
     * @param list list
     * @return List<V>
     */
    List<V> vo(List<D> list);

    /**
     * dto 转 entity（PO）
     *
     * @param dto DTO
     * @return Entity
     */
    T entity(D dto);

    /**
     * dto列表 转 entity列表
     *
     * @param list list
     * @return List<E>
     */
    List<T> entity(List<D> list);
}
